class Solution714 {
    public int maxProfit(int[] prices, int fee) {
        int n = prices.length ; 
         // 状态表示: 第i天处于 卖出 或 买入状态的最大利润 
         // 0: 买入状态  1: 卖出状态
         int[][] dp = new int[n][2] ; 
         dp[0][0] = -prices[0] - fee ; 
         for(int i=1 ; i < n ; i ++){
            dp[i][0] = Math.max(dp[i-1][0] , dp[i-1][1] - prices[i] - fee) ; 
            dp[i][1] = Math.max(dp[i-1][1] , dp[i-1][0] + prices[i]) ;
         }
         return Math.max(dp[n-1][0] , dp[n-1][1]) ; 
    }
}